package com.oscar.web.service;

import com.alibaba.fastjson.JSON;
import com.oscar.web.domain.Book;
import com.oscar.web.util.LogData;
import com.oscar.web.dao.BookRepository;
import com.oscar.web.dao.UserRepository;
//import org.apache.logging.log4j.LogManager;
//import org.apache.logging.log4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;

import java.util.Iterator;

/**
 * 如果有一个类带了@Service注解，将自动注册到Spring容器，
 * 不需要再在applicationContext里面定义bean了。
 * service层可以用于日志的收集和异常的捕获及转义，避免用户接触到底层信息
 */
@Service
public class BookService {
    //获取日志文件存到对应路径
//    Logger logger = LogManager.getLogger(BookService.class) ;

    @Autowired
    private BookRepository bookRepository ;//从接口中获取书库表来进行查询

    Logger logger=LoggerFactory.getLogger(BookService.class);

    private UserRepository userRepository ;//获取用户库

    //通过搜索的业务返回一个查询列表
    public Page<Book> search(String findName , Integer pageNumber , Integer pageSize ){
        //获取一页书的信息
        Page<Book> page = bookRepository.findBookByTitleLike("%" + findName + "%" , PageRequest.of(pageNumber, pageSize)) ;
        //将页面信息通过JSON.toJSON(logData).toString() 方法封装成字符串
        LogData<Iterator<Book>> logData = new LogData("search" , page.iterator()) ;
        String log = JSON.toJSON(logData).toString() ;
        //将信息存到日志中
        logger.info("埋点日志===========>"+log);
        return  page ;
    }

    public Book findById(int id){
        Book book = bookRepository.findBookByBookId(id) ;

        return book ;
    }
}
